package com.fcscs.cservice.gwt.client;

import java.util.List;

import com.fcscs.cservice.domain.BillOption;
import com.fcscs.cservice.domain.ChargeType;
import com.fcscs.cservice.domain.TransactionType;
import com.fcscs.cservice.domain.model.BillOptionView;
import com.fcscs.cservice.domain.model.ChargeCategoryView;
import com.fcscs.cservice.domain.model.ChargeTypeView;
import com.fcscs.cservice.domain.model.TransactionTypeView;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface InRoomConfServiceAsync {

	void createBillOption(BillOption bo, AsyncCallback<BillOption> callback);

	void createChargeCategoryView(long orgId, long propId,
			ChargeCategoryView chargeCategory,
			AsyncCallback<ChargeCategoryView> callback);

	void createChargeType(ChargeType chargeType,
			AsyncCallback<ChargeType> callback);

	void createTransactionType(TransactionType txType,
			AsyncCallback<TransactionType> callback);

	void deleteBillOption(BillOption bo, AsyncCallback<Boolean> callback);

	void deleteChargeCategoryView(ChargeCategoryView chargeCategory,
			AsyncCallback<Boolean> callback);

	void deleteChargeType(ChargeType chargeType, AsyncCallback<Boolean> callback);

	void deleteTransactionType(TransactionType txType,
			AsyncCallback<Boolean> callback);

	void getBillOptionList(long orgId, long propId,
			AsyncCallback<List<BillOption>> callback);

	void getBillOptionViewList(long orgId, long propId,
			AsyncCallback<List<BillOptionView>> callback);

	void getChargeCategoryViewList(long orgId, long propId,
			AsyncCallback<List<ChargeCategoryView>> callback);

	void getChargeTypeList(long orgId, long propId,
			AsyncCallback<List<ChargeType>> callback);

	void getChargeTypeViewList(long orgId, long propId,
			AsyncCallback<List<ChargeTypeView>> callback);

	void getTransactionTypeList(long orgId, long propId,
			AsyncCallback<List<TransactionType>> callback);

	void getTransactionTypeViewList(long orgId, long propId,
			AsyncCallback<List<TransactionTypeView>> callback);

	void isBillOptionTaken(long orgId, long propId, String name, Long id,
			AsyncCallback<Boolean> callback);

	void isChargeCategoryTaken(long orgId, long propId, String code, Long id,
			AsyncCallback<Boolean> callback);

	void isChargeTypeTaken(long orgId, long propId, String code, Long id,
			AsyncCallback<Boolean> callback);

	void isTransactionTypeTaken(long orgId, long propId, String code, Long id,
			AsyncCallback<Boolean> callback);

	void permDeleteBillOption(BillOption bo, AsyncCallback<Boolean> callback);

	void permDeleteChargeCategory(ChargeCategoryView chargeCategory,
			AsyncCallback<Boolean> callback);

	void permDeleteChargeType(ChargeType chargeType,
			AsyncCallback<Boolean> callback);

	void permDeleteTransactionType(TransactionType txType,
			AsyncCallback<Boolean> callback);

	void saveBillOption(BillOption bo, AsyncCallback<BillOption> callback);

	void saveChargeCategoryView(long orgId, long propId,
			ChargeCategoryView chargeCategory,
			AsyncCallback<ChargeCategoryView> callback);

	void saveChargeType(ChargeType chargeType,
			AsyncCallback<ChargeType> callback);

	void saveTransactionType(TransactionType txType,
			AsyncCallback<TransactionType> callback);

	void getBillOption(long id, AsyncCallback<BillOption> callback);

}
